package org.capgemini.tienda.actions;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.capgemini.tienda.service.ProductosDelegateImpl;
import org.capgemini.tienda.service.TiendaDelegateFactory;
import org.capgemini.tienda.utils.ContextKeys;
import org.capgemini.tienda.utils.RequestKeys;
import org.capgemini.tienda.utils.SessionKeys;


public class ProductoAction extends DispatchAction {

	protected static Logger log= Logger.getLogger(ProductoAction.class);

	public ActionForward detalleProducto(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		final ServletContext context=request.getSession().getServletContext();

		ProductosDelegateImpl productosDelegateImpl=(ProductosDelegateImpl) context.getAttribute(ContextKeys.PRODUCTOS_DELEGATE);
		if(productosDelegateImpl==null){
			productosDelegateImpl=ProductosDelegateImpl.getInstance();
			context.setAttribute(ContextKeys.PRODUCTOS_DELEGATE, productosDelegateImpl);
		}
		
		String idProducto;
		if(request.getParameter(RequestKeys.ID_PRODUCTO)==null){
			idProducto=(String) request.getAttribute(RequestKeys.ID_PRODUCTO);
		}
		else{
			idProducto=request.getParameter(RequestKeys.ID_PRODUCTO);
		}
		
		request.setAttribute(RequestKeys.PRODUCTO, productosDelegateImpl.getDetalleProducto(idProducto));
		request.getSession().setAttribute(SessionKeys.PRODUCTO, productosDelegateImpl.getDetalleProducto(idProducto));
		
		return mapping.findForward("detalleProducto");
	}
	
	public ActionForward listadoProductos(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		final ServletContext context=request.getSession().getServletContext();
		
		ProductosDelegateImpl productosDelegateImpl=(ProductosDelegateImpl) context.getAttribute(ContextKeys.PRODUCTOS_DELEGATE);
		if(productosDelegateImpl==null){
			
			productosDelegateImpl=ProductosDelegateImpl.getInstance();
			context.setAttribute(ContextKeys.PRODUCTOS_DELEGATE, productosDelegateImpl);
		}
		
		request.setAttribute(RequestKeys.LISTA_PRODUCTOS, TiendaDelegateFactory.getProductosDelegate().getListaProductos());
		return mapping.findForward("listadoProductos");
	}
}
